﻿using System;

namespace BizElements.Web
{
    #region Documentation.
    /// <summary>Allows applications to provide customized user interface messages for <see cref="SearchFilter"/> control.</summary>
    /// <remarks>You can implement the <b>ISearchFilterTextSource</b> interface to provide custom localization of the <see cref="SearchFilter"/> control 
    /// user interface. Values returned from ISearchFilterTextSource objects override values set through SearchFilter's properties. If a 
    /// ISearchFilterTextSource property returns null then no override occurs, i.e. a value set through SearchFilter property or a skin file is used.</remarks>
    #endregion
    public interface ISearchFilterTextSource
    {
        #region Text used for generated search field controls.

        /// <summary>Gets the Text property for generated CheckBox controls which indicates whether filter created for a search field is combined using logical OR.</summary>
        string AddWithOrText { get; }
        /// <summary>Gets the Text property for generated CheckBox controls which indicates whether filter created for a search field is inverted.</summary>
        string InvertFilterText { get; }
        /// <summary>Gets the Text property for generated CheckBox controls which indicates whether filter created for a search field will try to find any of the specified words/phrases.</summary>
        string AnyWordOrPhraseText { get; }
        /// <summary>Gets the caption for the Default text search mode option.</summary>
        string TextSearchModeDefaultCaption { get; }
        /// <summary>Gets the caption for the BeginningOfText text search mode option.</summary>
        string TextSearchModeBeginningOfTextCaption { get; }
        /// <summary>Gets the caption for the AnywhereInText text search mode option.</summary>
        string TextSearchModeAnywhereInTextCaption { get; }
        /// <summary>Gets the caption for the ExactMatch text search mode option.</summary>
        string TextSearchModeExactMatchCaption { get; }
        /// <summary>Gets the Text property for generated CheckBox controls which indicates whether users can choose to look for records where the field value is not set, ie. null.</summary>
        string IsNullText { get; }
        /// <summary>Gets the ToolTip property for generated CheckBox controls which indicates whether users can choose to look for records where the field value is not set, ie. null.</summary>
        string IsNullToolTip { get; }
        /// <summary>Gets the ToolTip property for generated CheckBox controls which indicates whether filter created for a search field will try to find any of the specified words/phrases.</summary>
        string AnyWordOrPhraseToolTip { get; }
        /// <summary>Gets the ToolTip property for generated CheckBox controls which indicates whether filter created for a search field is combined using logical OR.</summary>
        string AddWithOrToolTip { get; }
        /// <summary>Gets the ToolTip property for generated CheckBox controls which indicates whether filter created for a search field is inverted.</summary>
        string InvertFilterToolTip { get; }

        #endregion

        #region Other.

        /// <summary>Gets the text caption of the open predefined filter control.</summary>
        string OpenPredefinedFilterText { get; }
        /// <summary>Gets the caption of show advanced search options toggle button. </summary>
        string ShowAdvancedOptionsCaption { get; }
        /// <summary>Gets the caption of hide advanced search options toggle button. </summary>
        string HideAdvancedOptionsCaption { get; }

        #endregion

        #region Text used for predefined child controls - applied to child control properties.

        /// <summary>Gets the text caption displayed in the <b>search button</b> control.</summary>
        string SearchButtonText { get; }
        /// <summary>Gets the text caption displayed in the <b>reset button</b> control.</summary>
        string ResetButtonText { get; }
        /// <summary>Gets the text caption displayed in the <b>Find filter button</b> control.</summary>
        string FindFilterButtonText { get; }
        /// <summary>Gets the text caption displayed in the <b>save button</b> control.</summary>
        string SaveButtonText { get; }

        #endregion
    }
}